1. Field
The field relates to visual information systems and, more particularly, to the identification and selective encoding of changed host display information, optionally for transmission to one or more geographically dispersed viewers.
2. Description of the Related Art
Telephones enable people to communicate verbally, but do not enable participants to a telephone call to exchange visual information with each other. Conventionally, when visual information such as a PowerPoint (™ Microsoft Corporation) presentation or a document was to be referenced during a telephone conversation, the visual information would be faxed, e-mailed, or otherwise physically sent to the participants so that the participants could have the reference materials available during the telephone call.
As technology evolved, software was developed to allow information being shown on a host's display (host display information), such as a computer monitor screen, to be made visible on another display at a geographically dispersed location. Software of this nature will be referred to herein as “Remote Viewing Software” (RVS).
FIG. 1 illustrates an example of a typical way in which remote viewing of host display information may take place. As shown in FIG. 1, a host participant 10 may desire to allow host display information 12 appearing on a host display 14 associated with a host machine 16, to be made available to a viewer participant 18. To do so, RVS software 20 on the host machine 16 will capture the host display information 12 and pass it over a network 22 to a viewer machine 24. An instantiation of the RVS software 26 (which may be the same as RVS software 20 or a limited version of RVS software 20) will decode the received host display information to generate viewer display information 28 that will be caused to appear on the viewer display 30. A remote viewing service 32 may be provided to support viewing sessions on the network. A combination of the host machine and host display will collectively be referred to herein as a “host” 34. The host machine and host display may be separate devices or integrally formed. Similarly, a combination of a viewer machine and viewer display will collectively be referred to herein as a “viewer” 36. The viewer machine and viewer display may be separate devices or integrally formed.
By looking at the viewer display information 28 on the viewer display 30, the viewer participant 18 may thus see a reproduction of the host display information 12 on the viewer display 30. A remote viewing session over which the host display information is transmitted may be hosted by the host machine 16 or, optionally, the remote viewing service 32 may assume a portion of the tasks required to host the session.
When the system of FIG. 1 is in use, the host participant may cause a desired visual presentation to appear on the viewer display 30 simply by causing the desired visual presentation to appear as part of the host display information on the host display. Since the host participant 10 is able to control the host and hence the content that is used to form the host display information, the host participant may control the content that is made to appear on the viewer display. Reference may then be made to the shared host display information to enable more effective communication to take place between the host participant and viewer participants.
Remote Viewing Software (RVS) tools vary significantly in their complexity. For example, some RVS tools require all participants to have special purpose RVS software installed on their machines, firewalls custom configured to enable traffic to pass over the networks, and require extensive training. Other RVS tools are much simpler to use, such as the RVS tool developed by Glance Networks™, which allows a remote viewing session to be created using RVS software 20 on the host machine 16, and allows the RVS software 26 on the viewer machine 24 to be run in a Java-enabled Internet browser or native code viewer on the viewer machine 24. Other companies have developed similar RVS tools as well, such as WebEx™, PictureTel™, Citrix™, and Raindance™, and Glance Networks' RVS tool is described herein merely as an example of an RVS tool.
Since transmission of host display information may require transmission of a significant amount of data, RVS software 20 may encode the host display information for transmission over the network 22. The RVS software 26 will then decode the received information for display on the viewer display 30. One available encoder/decoder (codec), which has been implemented, for example in the Glance Networks RVS tool, is a software codec known as Virtual Network Computing (VNC)™.
The VNC codec was initially designed to be used in a one to one scenario, where one viewer was to be allowed to connect to a RVS session to receive host display information. Although the VNC software can be used in a one to many scenario, where multiple viewers are provided with access to the host display information, the VNC software was not initially designed to do so and, hence, is not optimized to create connections between the host and multiple viewers. Given the limitations of the VNC software and other available codecs, it would be advantageous to provide a new method and apparatus for the identification and encoding of changed visual display information, optionally for transmission to one or more geographically dispersed displays. Additionally, it would be advantageous to provide a new method and apparatus for the transmission of changed host display information to one or more geographically dispersed displays.
Different viewers have different abilities to receive information, for example where the network conditions or machine capabilities limit a receiver's ability to receive updates. Accordingly, it is desirable to allow the different viewers to receive information at different rates.
There are several conventional techniques that may be used to enable viewers to receive updates at different rates. For example, the host may send two streams of data to the server—a fast stream and a slow stream—and the server may serve the viewers with the appropriate stream depending on their connection to the server, the network conditions, the rate at which information is requested and other factors. Where more than two speeds are to be supported, the host may send more than two streams of data. Requiring the host to send more than one stream of data, however, requires the host to have sufficient bandwidth available to transmit the multiple streams of data and sufficient processing power to compute the multiple streams.
Another example of how viewers may be provided with updates at different rates is to have the host send a high quality stream of encoded data at a first, high bandwidth rate, and have the data transcoded by the remote viewing service. Transcoding in this example involves decoding the data from the viewer and re-encoding the data multiple times to create several available streams of data that may be output to the viewers at different rates. This method requires considerable processing resources at the server, since the server is required to decode the data and re-encode the data multiple times (up to once for each transmission stream). Since particular types of encoding result in losses to the picture quality, causing the image to be encoded twice exacerbates the losses of the encoding procedure. Thus, depending on the implementation, transcoding may result in relatively poor image quality. Additionally, decoding and re-encoding increases the latency of the transmission process since it requires the remote viewing service to perform additional operations on the data before transmission of the data can occur to the viewers.
A third way to allow the viewers to be provided with updates at different rates is to use progressive coding in which the coding is layered to enable an hierarchical reconstruction to take place. Layered coding or hierarchical coding is a technique developed for scalable video delivery, in which the signal is separated into components of differing visual importance. The basic concept with layered coding is that each video component, or layer, can be coded and transferred according to its importance. Vital layers may thus be transferred first and other layers, which merely enhance the image quality, could be sent if sufficient bandwidth is available. Using this type of coding, important aspects of the signal may be transmitted to all participants while less important aspects may be transmitted to participants with higher bandwidth capabilities.
While the several available techniques all enable different amounts of information to be provided to different viewers, given their limitations, it would be advantageous to provide another way in which the amount of information transmitted to viewers on a session could be adjusted depending on the capabilities of the individual viewers.